There are different types of processing environments, including emulated and non-emulated environments. In an emulated environment, the processors are designed in one architecture, but emulate a different architecture. As a specific example, processors architected in the PowerPC® architecture, offered by International Business Machines Corporation, emulate the z/Architecture® also offered by International Business Machines Corporation. As a further example, processors having, for instance, an Intel® architecture emulate the z/Architecture® or other architectures offered by International Business Machines Corporation or other companies.
In contrast, in a non-emulated environment, the processors are designed in one architecture and the processing is performed based on that architecture. Emulation is not performed.
Some emulated environments take advantage of Dynamic Binary Translation (DBT) to improve performance. In such an environment, the emulator is coupled to a compiler, such as a Just-In-Time (JIT) compiler used to optimize processing. The JIT compiler compiles selected code segments and places the compiled code segments (a.k.a., traces) in a code cache. The management of such a code cache is difficult, however, because the emulator is unaware of processes mapped to memory regions, and the emulator cannot reuse compiled (a.k.a., translated) binary code across multiple sessions. Thus, a great deal of processing power is wasted in such environments.